# 编写函数，接受字符串，输出一个元组，元组第一个元素为大写字母的个数，第二个元素为小写字母的个数
# def getChNumber(strs):
#     upperCount = 0
#     lowerCount = 0
#     for i in strs:
#         if i.isupper():
#             upperCount+=1
#         elif i.islower():
#             lowerCount+=1
#         else:
#             continue
#     return (upperCount,lowerCount)
# print(getChNumber('AHDSJHDgsjhdjhfjhhsdf4545'))
import math


# 编写函数，传入一个20个整数的list对象和一个整数k作为参数，返回一个新列表，下标k之前的元素逆序，下标k之后的元素逆序，然后list中所有元素逆序
# def getNewList(var_list,k):
#     x = var_list[:k]
#     x.reverse()
#
#     y = var_list[k:len(var_list)]
#     y.reverse()
#
#     z = x + y
#     return list(reversed(z))
#
# test1 = getNewList([0,2,4,6,8,10,1,3,5,7,9,11],3)
# print(test1)

# 编写函数，接收一个包含若干整数的list对象，返回一个元组，第一个元素为列表中的最小值，另一个元素是最小值对应的下标
# def getNewTup(var_list):
#     min_num = min(var_list)
#     var = [i for i, j in enumerate(var_list) if j == min_num]
#     return (min_num,) + tuple(var)
# vs = getNewTup([10,2,3,4,5,21,18])
# print(vs)

# 编写函数，输入一个正偶数，输出两个素数，并且这两个素数之和等于正偶数，若有多组，分别输出
# def isASuShu(x):
#     count = int(math.sqrt(x))+1
#     for i in range(2,count):
#         if x % i == 0:
#             return False
#     return True
#
#
# def printSushu(vars):
#     if vars >=0 and vars % 2 ==0:
#         for i in range(2,vars):
#             if isASuShu(i) and isASuShu(vars - i):
#                 print(i,vars-i)
#         else:
#             print("该正偶数不具体两个素数之和")
#     else:
#         print("输入的不是正偶数！")
#
# printSushu(6)

# def add(x,y,z):
#     print(x+y+z)
# add(* {11,22,33})

# var_list = []
# for x in range(10):
#     var_list.append(lambda n=x: n * 2)
# print(var_list[0](),var_list[1]())
# print(dir(__builtins__))

# 递归函数 自己调用自己
# 计算n的阶乘 5！= 5*4*3*2*1
# def jc(n):
#     if n == 1:
#         return 1
#     else:
#        return n*jc(n-1)
#
# print(jc(10))
# pass的使用：表示空语句、占位，为以后程序扩展预留空间
# pass可以用于class、function和选择语句中
# class Student(object):
#     '''
#     这是一个测试类，用来验证保护成员、私有成员、系统成员的区别和访问权限
#     1、保护成员：用_前缀表示，不能通过from module import * 导入，只有类对象和子类对象可以访问
#     2、私有成员：用__前缀表示，只有类对象自己能访问，子类对象都不能访问
#     3、特殊成员：__xxx__表示，系统定义的特殊成员
#     '''
#
#     def publicFunc(self):
#         print("我是一个公共成员")
#
#     def _protectFunc(self):
#         print("我是一个保护成员")
#
#     def __privateFunc(self):
#         print("我是一个私有成员")
#
#     def __init__(self, username, password):
#         """有参构造方法"""
#         print("我是一个系统定义的特殊成员")
#         self._username = username
#         self.__password = password
#
#     def setValue(self,username,password):
#         self._username = username
#         self.__password = password
#
#     def getValue(self):
#         print("username is {0} and password is {1}".format(self._username,self.__password))
#
# class Junior(Student):
#     pass
#
# j = Junior("Lilei",'123456')
from chapter_03_Python面向对象程序设计 import test1
p = test1.MyderivePerson()
print(p._private_var)
p._privateFunc()